Skip to content

fix(query): 对齐 coverage 与实时 freshness - #97

Merged
catoncat merged 2 commits into
mainfrom
agent/fix-query-coverage-contract
Jul 12, 2026
Merged

fix(query): 对齐 coverage 与实时 freshness#97
catoncat merged 2 commits into
mainfrom
agent/fix-query-coverage-contract

Conversation

@catoncat

Copy link
Copy Markdown
Owner

Mainline Intent

Intent: int_d1a680cc
Status: proposed
Title: 对齐查询 coverage 与实时 freshness

What changed

find CLI 使用同一次 raw source freshness 评估生成 coverage 与 nextAction;fresh 才声明 complete,Codex 活跃尾部的非空结果保持可查询但明确 stale/incomplete,零结果提示同步。纯 SQLite facade 未检查 raw 时返回 complete=false/not_checked,并保留 coveringSelectors。status 与 find 共用 coverage-freshness 模块;同步更新 JSON contract、正式 skill 和 0.3.19 版本。

Why

0.3.18 的 find JSON 可能同时返回 complete=true/freshness=not_checked 与 stale_or_missing_coverage,给调用方互相矛盾的完整性信号。完整性、freshness 和下一步动作必须来自同一 source snapshot,同时不能把 soft stale 的可查询索引说成不可用。

Decisions

  • find 如何同时表达索引可用性与当前完整性: live freshness 决定 complete/freshness/staleReason,查询结果数量只决定是否需要 nextAction (非空 Codex soft stale 可以继续使用,但只有 fresh snapshot 才能声称 complete)
  • 同步 SQLite facade 无法读取 raw source 时如何表达: 返回 complete=false/freshness=not_checked,同时保留 coveringSelectors (区分未知 freshness 与 coverage 完全不存在,避免把未知误报为 fresh)
  • 如何防止 status 与 find 再次漂移: 抽取 coverage-freshness 共享模块统一 record 与 requested selector 判定 (独立审查发现重复规则会让后续 source freshness 变更再次产生合同分叉)

Subsystems: docs, package-lock.json, package.json, skill-packages, src

@catoncat
catoncat merged commit d3c2917 into main Jul 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant